package com.zhiwei.jenkins.utils;

import java.math.BigDecimal;
import java.math.RoundingMode;
import java.text.DecimalFormat;
import java.text.NumberFormat;

public class NumberUtils {
    public static DecimalFormat df = new DecimalFormat("0.00");

    /**
     * 格式化数值类型格式化为指定类型
     *
     * @param sourceDigit 原始数据
     * @param MaxDigit    最大数位
     * @param minDigit    最小数位
     * @param goupingUsed 是否使用千分位
     * @return
     */
    public static String formatDigit(Integer sourceDigit, Integer MaxDigit, Integer minDigit, Boolean goupingUsed) {
        NumberFormat nf = NumberFormat.getInstance();
        //设置是否使用分组(千分位)
        nf.setGroupingUsed(goupingUsed);
        //设置最大整数位数
        nf.setMaximumIntegerDigits(MaxDigit);
        //设置最小整数位数
        nf.setMinimumIntegerDigits(minDigit);
        return nf.format(sourceDigit);
    }

    /**
     * 默认double数据格式
     * @param d
     * @return
     */
    public static String getDefaultFormatHalfDown(Double d){
        if(d==null){
            return "";
        }
        df.setRoundingMode(RoundingMode.DOWN);
        return df.format(d);
    }


    /**
     * 默认double数据格式
     * @param d
     * @return
     */
    public static String getFormat(Double d,String formate){
        if(d==null){
            return "";
        }
        DecimalFormat df = new DecimalFormat(formate);
        df.setRoundingMode(RoundingMode.DOWN);
        return df.format(d);
    }

    /**
     * 默认double数据格式
     * @param d
     * @return
     */
    public static String getFormatHalfUp(Double d,String formate){
        if(d==null){
            return "";
        }
        DecimalFormat df = new DecimalFormat(formate);
        df.setRoundingMode(RoundingMode.HALF_UP);
        return df.format(d);
    }

    /**
     * 默认BigDecimal数据格式
     * @param d
     * @return
     */
    public static String getFormat(BigDecimal d, String formate){
        if(d==null){
            return "";
        }
        DecimalFormat df = new DecimalFormat(formate);
        df.setRoundingMode(RoundingMode.DOWN);
        return df.format(d);
    }

    /**
     * 默认BigDecimal数据格式
     * @param d
     * @return
     */
    public static String getDefaultFormatHalfDown(BigDecimal d){
        if(d==null){
            return "0.00";
        }
        df.setRoundingMode(RoundingMode.DOWN);
        return df.format(d);
    }


    /**
     * 默认BigDecimal数据格式
     * @param d
     * @return
     */
    public static String getDefaultFormatHalfDown(Object d){
        if(d==null){
            return "";
        }
        df.setRoundingMode(RoundingMode.DOWN);
        return df.format(d);
    }
}
